//package org.example;
//
//import org.example.entity.CustomerInfo;
//import org.example.generator.DataGenerator;
//
//import java.util.HashMap;
//import java.util.Map;
//
///**
// * 测试城市和身份证号映射关系
// */
//public class TestCityIdMapping {
//    public static void main(String[] args) {
//        System.out.println("=== 测试城市和身份证号映射关系 ===");
//
//        Map<String, Integer> cityCount = new HashMap<>();
//        Map<String, String> cityIdMapping = new HashMap<>();
//
//        // 生成100个用户信息，统计城市分布和身份证前缀
//        LocalDate testDate = LocalDate.of(2023, 8, 15);
//        for (int i = 0; i < 100; i++) {
//            CustomerInfo customer = DataGenerator.generateCustomerInfo(testDate);
//            String city = customer.getSaleCityName();
//            String idNo = customer.getPlIdNo();
//            String idPrefix = idNo.substring(0, 3);
//
//            // 统计城市出现次数
//            cityCount.put(city, cityCount.getOrDefault(city, 0) + 1);
//
//            // 记录城市和身份证前缀的映射关系
//            if (!cityIdMapping.containsKey(city)) {
//                cityIdMapping.put(city, idPrefix);
//            }
//        }
//
//        System.out.println("\n城市分布统计（前20个）:");
//        cityCount.entrySet().stream()
//                .sorted((e1, e2) -> e2.getValue().compareTo(e1.getValue()))
//                .limit(20)
//                .forEach(entry -> {
//                    String city = entry.getKey();
//                    Integer count = entry.getValue();
//                    String idPrefix = cityIdMapping.get(city);
//                    System.out.printf("%-20s: %d次, 身份证前缀: %s%n", city, count, idPrefix);
//                });
//
//        System.out.println("\n总城市数量: " + cityCount.size());
//        System.out.println("总身份证前缀数量: " + cityIdMapping.values().stream().distinct().count());
//
//        // 验证身份证前缀和城市的对应关系
//        System.out.println("\n身份证前缀分布:");
//        Map<String, Integer> prefixCount = new HashMap<>();
//        cityIdMapping.values().forEach(prefix ->
//            prefixCount.put(prefix, prefixCount.getOrDefault(prefix, 0) + 1));
//
//        prefixCount.entrySet().stream()
//                .sorted((e1, e2) -> e2.getValue().compareTo(e1.getValue()))
//                .forEach(entry -> {
//                    System.out.printf("前缀 %s: %d个城市%n", entry.getKey(), entry.getValue());
//                });
//
//        System.out.println("\n=== 测试完成 ===");
//    }
//}
